Typing using a keyboard has remained as the most common way of inputting alphanumeric data into a computer. The keyboard can be characterized as an indirect interaction device, as the user interacts with a separate device (the keyboard) and the result of the interaction (the text input) is displayed on-screen spatially offset from the keyboard. Even when software keyboards are used with touch-sensitive screens, the input is still indirect to some extent as the fingers are pressing keys that are offset from a text input location (i.e. cursor) on the screen. If a software keyboard is displayed sufficiently close to the text input location to be considered as direct interaction, then the keyboard consequently obscures a significant portion of the user interface.
The indirect nature of keyboard input means that users can often struggle to learn to enter alphanumeric data in an efficient manner. This is often because the users are not sufficiently familiar with the keyboard layout, which results in the users looking at the keyboard rather than the text being entered on the screen. This is exacerbated by the proliferation of new types of devices having keyboards, in both hardware and software forms. This includes, for example, tablets, smartphones and netbooks. Each of type of device has its own design constraints, which results in keyboard layout differences.
Often, as a result of unfamiliarity with the keyboard layout, users make repeated mistakes when entering text using a keyboard, and as a result a muscle memory develops. Such a muscle memory can be hard to subsequently break.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known keyboard data entry techniques.